﻿using System.Collections.Generic;
using MIAP.Entidades;

namespace MIAP.DataAccess.Interfaces
{
    /// <summary>
    /// Contrato del DAO de procesos de CargasArchivoDao.
    /// </summary>
    public interface ICargasArchivosDao
    {
        /// <summary>
        /// Obtiene los archivos Autorizados para realizar una recarga.
        /// </summary>
        /// <param name="idUsuario">Id del usuario al cual autorizaron la recarga.</param>
        IList<ListaInfo> GetArchivosAutorizados(int idUsuario);

        /// <summary>
        /// Obtiene la información de carga de un archivo.
        /// </summary>
        /// <param name="idArchivo">Id del archivo a revisar.</param>
        /// <param name="version">Si es un archivo versionable indica la versión del archivo.</param>
        /// <returns></returns>
        List<CargaArchivoInfo> GetInformacionArchivoCarga(int idArchivo, string version);

        /// <summary>
        /// Registra una nueva carga de archivo en el sistema.
        /// </summary>
        /// <param name="archivo">Informacion del archivo que registraremos la carga.</param>
        /// <param name="user">Usuario que esta realizando la carga.</param>
        int CargaArchivo(CargaArchivoInfo archivo, UsuarioInfo user);

        /// <summary>
        /// Registra una re-Carga de archivo en el sistema.
        /// </summary>
        /// <param name="archivo">Información del archivo que registraremos la carga.</param>
        /// <param name="user">Usuario que esta realizando la carga.</param>
        int RecargaArchivo(CargaArchivoInfo archivo, UsuarioInfo user);

        /// <summary>
        /// si existio algun error detectado por nuestra aplicación en la ejecucion de proyectos o 
        /// carga de archivos este se marcará con estatus de error
        /// </summary>
        /// <param name="idBitGeneral">Id del registro que fue iniciado</param>
        /// <param name="usuario">usuario quien realiza el proceso</param>
        void SetProcesoError(int idBitGeneral, string usuario);
    }
}
